package com.zr.command.service;

import java.util.List;
import com.zr.command.domain.EimCommandSchedule;
import com.zr.common.core.domain.entity.SysUser;
import com.zr.eim.domain.EimDataPerson;
import com.zr.eim.domain.EimOuterCitizen;

/**
 * 指挥调度工单Service接口
 * 
 * @author chengkai
 * @date 2022-10-21
 */
public interface IEimCommandScheduleService 
{
    /**
     * 查询指挥调度工单
     * 
     * @param id 指挥调度工单主键
     * @return 指挥调度工单
     */
    public EimCommandSchedule selectEimCommandScheduleById(Long id);

    /**
     * 查询指挥调度工单列表
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 指挥调度工单集合
     */
    public List<EimCommandSchedule> selectEimCommandScheduleList(EimCommandSchedule eimCommandSchedule);

    /**
     * 新增指挥调度工单
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 新增行数
     */
    public int insertEimCommandSchedule(EimCommandSchedule eimCommandSchedule);

    /**
     * 修改指挥调度工单
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 修改行数
     */
    public int updateEimCommandSchedule(EimCommandSchedule eimCommandSchedule);

    /**
     * 删除指挥调度工单信息
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 删除行数
     */
    public int deleteEimCommandScheduleById(EimCommandSchedule eimCommandSchedule);

    /**
     * 查询指挥调度工单列表
     */
    List<EimCommandSchedule> listEimCommandSchedule(EimCommandSchedule eimCommandSchedule,SysUser user);


    /**
     * 查询隔离点列表
     */
    List<String> listQuarantineAddress(Long organizationId);

    /**
     * 分配指挥调度单给负责小组
     */
    int dispatchScheduleById(List<Long> ids, Long groupId);

    /**
     * 根据流调结果新增指挥调度工单
     * @param personList 流调出来的确诊或者密接人员列表
     * @return 新增确诊和密接人数
     */
    public int insertEimCommandSchedulesByCovidFlow(List<EimDataPerson> personList);

    /**
     * 修改指挥调度工单
     * 需求大厅：APP
     */
    public int editEimCommandSchedule(EimCommandSchedule eimCommandSchedule);

/**
     * 根据工单执行状态查找对应状态的工单数量
     */
    int selectScheduleCountByStatus(Integer status,String  userName);

    /**
     * 根据工单类型查找对应的工单数量
     */
    int selectScheduleCountByType(Integer type, String userName);

    /**
     * 查询状态未未分配的指挥调度工单列表
     */
    List<EimCommandSchedule> listUndispatchedEimCommandSchedule(SysUser user);

    int insertEimCommandScheduleByOuterCitizen(EimOuterCitizen citizen);
}
